package E_2024;

/*
    程序员小明打了一辆出租车去上班。出于职业敏感，他注意到这辆出租车的计费表有点问题，总是偏大。
    出租车司机解释说他不喜欢数字4，所以改装了计费表，任何数字位置遇到数字4就直接跳过，其余功能都正常。
    比如：
    23再多一块钱就变为25；
    39再多一块钱变为50；
    399再多一块钱变为500；
    小明识破了司机的伎俩，准备利用自己的学识打败司机的阴谋。
    给出计费表的表面读数，返回实际产生的费用。
    输入描述
        只有一行，数字N，表示里程表的读数。
        (1<=N<=888888888)。
    输出描述
        一个数字，表示实际产生的费用。以回车结束。
 */
public class E_100_10 {
    public static void main(String[] args) {
        System.out.println(ans(25));
        System.out.println(ans(500));
//        System.out.println(ans(888888888));
        System.out.println(ans2(25));
        System.out.println(ans2(500));
        System.out.println(ans2(888888888));
    }
    public static int ans(int num){
        int ans = 0;
        int temp = ans;
        while(temp < num){
            temp++;
            int x = temp;
            boolean bool = false;
            while (x > 0){
                if (x % 10 == 4) {
                    bool = true;
                    break;
                }
                x /= 10;
            }
            if (!bool) {
                ans++;
            }
        }
        return ans;
    }
    // 其实是个9进制转换问题
    public static int ans2(int num) {
        int ans = 0;
        int length = 0;
        while(num > 0){
            int temp = num % 10;
            if (temp > 4) temp--;
            for (int i = 0; i < length; i++) {
                temp *= 9;
            }
            num /= 10;
            length++;
            ans += temp;
        }
        return ans;
    }
    /*
    500 9

     */
}
